home *** CD-ROM | disk | FTP | other *** search
-
- # Dan Hellers program 4.3, p 99
- # show pixmaps, allow them to change cursor, file selection to
- # change bitmaps. When doing this, use pixmaps in eg
- # /usr/lib/X11/bitmaps
-
- global pixmap
-
- set pixmap xlogo32
-
- xtAppInitialize
-
- xmMainWindow .main managed -scrollBarDisplayPolicy as_needed \
- -scrollingPolicy automatic
- # mainWindow .main
- xmLabel .main.label managed -labelType pixmap -labelPixmap $pixmap
-
- # I am not supporting simple menu functions, so do this the long way
-
- # top menu bar
- xmMenuBar .main.menuBar managed
- xmCascadeButton .main.menuBar.file managed \
- -labelString File \
- -mnemonic F
- xmCascadeButton .main.menuBar.cursor managed \
- -labelString Cursor \
- -mnemonic E
- xmCascadeButton .main.menuBar.help managed \
- -labelString Help \
- -mnemonic H
-
- # file pulldown
- xmPulldownMenu .main.menuBar.fileMenu
- xmPushButton .main.menuBar.fileMenu.new managed \
- -labelString "New..." \
- -mnemonic N
- xmPushButton .main.menuBar.fileMenu.quit managed \
- -labelString Quit \
- -mnemonic Q
- .main.menuBar.file setValues -subMenuId .main.menuBar.fileMenu
-
- # callbacks for file menu
- .main.menuBar.fileMenu.quit activateCallback "exit 0"
- .main.menuBar.fileMenu.new activateCallback fileDialog
-
- # Cursor pulldown
- xmPulldownMenu .main.menuBar.cursorMenu
- xmToggleButton .main.menuBar.cursorMenu.X_cursor managed \
- -labelString X_cursor
- xmToggleButton .main.menuBar.cursorMenu.boat managed \
- -labelString boat \
- -mnemonic R
- xmToggleButton .main.menuBar.cursorMenu.circle managed\
- -labelString circle \
- -mnemonic G
- xmToggleButton .main.menuBar.cursorMenu.coffee_mug managed \
- -labelString coffee_mug \
- -mnemonic B
-
- # .main.menuBar.cursorMenu.black setValues -set True
- .main.menuBar.cursor setValues -subMenuId .main.menuBar.cursorMenu
-
- # callbacks for edit menu
- # note we use disarm rather than armed, because changed value
- # not set till then
- .main.menuBar.cursorMenu.X_cursor disarmCallback "change_cursor X_cursor"
- .main.menuBar.cursorMenu.boat disarmCallback "change_cursor boat"
- .main.menuBar.cursorMenu.circle disarmCallback "change_cursor circle"
- .main.menuBar.cursorMenu.coffee_mug disarmCallback "change_cursor coffee_mug"
-
- .main.menuBar.cursorMenu setValues -radioBehavior True \
- -radioAlwaysOne True
-
- # help pulldown
- xmPulldownMenu .main.menuBar.helpMenu managed
- xmPushButton .main.menuBar.helpMenu.help managed \
- -labelString Help \
- -mnemonic H
- .main.menuBar.help setValues -subMenuId .main.menuBar.helpMenu
-
- .main.menuBar setValues -menuHelpWidget .main.menuBar.help
-
- .main setValues -workWindow .main.label \
- -menuBar .main.menuBar
-
- proc change_cursor {cursor} {
- global isSet
- global pixmap
-
- .main.menuBar.cursorMenu.$cursor getValues -set isSet
- if {$isSet == "true"} {
- .main.label defineCursor $cursor
- }
- }
-
- proc fileDialog {} {
- # does this command already exist - else create it
- if {[llength [info commands .fileDialog]] > 0} {
- .fileDialog manageChild
- } else {
- xmFileSelectionDialog .fileDialog managed
- .fileDialog okCallback load_pixmap
- .fileDialog cancelCallback ".fileDialog unmanageChild"
- }
- }
-
- proc load_pixmap {} {
- global selection
- global pixmap
-
- .fileDialog getValues -dirSpec selection
- .main.label setValues -labelPixmap $selection
- set pixmap $selection
- }
-
- . realizeWidget
- . mainLoop
-
-